#该函数中定义一个函数，且返回该内部函数名：函数的闭包
# def outer(f):
#     print("i'm 外部函数outer")
#
#     #内部
#     def inner():
#         print("i'm 内部函数inner")
#         print("开始调用函数")
#         f()
#         print("执行结束")
#     #返回内部函数名
#         return inner()
#
# if __name__ == '__main__':
#     #调用outer函数，并将返回值赋值给f
#     #返回值是inner，相当于f=inner
#     # f=outer()
#     # print(f,id(f))
#     from jjj import jsq
#     f=outer(jsq.minus)
# f()

def outer(fff):
    print('我是外部函数outer!')
    #outer函数内部定义函数
    def inner(*args,**kwargs):
        print('我是内部函数inner!')
        print('开始进行运算')
        result=fff(*args,**kwargs)
        print('运算结束')
    #返回该内部函数名
def outer(fff):
    print('我是外部函数outer!')
    #outer函数内部定义函数
    def inner(*args,**kwargs):
        print('我是内部函数inner!')
        print('开始进行运算')
        result=fff(*args,**kwargs)
        print('运算结束')
    #返回该内部函数名
    return inner
if __name__ == '__main__':

    # 调用outer函数,并将返回值赋值给f
    # 返回值是inner,相当于是 f=inner
    from jjj import DoYunSuan
    ys = DoYunSuan()
    # f=outer()
    # print(f,id(f))

    # f()
    outer(ys.mySum(20,90))  # ==inner()
    outer(ys.myJian(20, 90))